/*
File:				Item.h
Course:		SGP 1208
Author:		Kori Po
Purpose:	Item object class
*/

#pragma once
#include <string>
using std::string;

//enum ITEMNAME { CHANGETHISLATER};

#include "Entity.h"
#include "../SGD Wrappers/CSGD_TextureManager.h"

class CItem : public CEntity
{
	// Modifer Values
	int			m_nModHPRegen;
	int			m_nModMPRegen;
	int			m_nModMaxHP;
	int			m_nModMaxMP;
	int			m_nModHP;
	int			m_nModMP;
	int			m_nModDefense;
	int			m_nModAtkPower;
	float		m_fModAtkSpeed;
	int			m_nModAP;
	float		m_fModCDR;
	float		m_fModMovement;
	// The Info about it
	string		m_strItemName;

	// Am I in an Invetory?
	bool m_bOwned;

	// Wrapper Needed
	CSGD_TextureManager*		m_TextureGuy;

public:
	// Def Con && Decon
	CItem(void);
	virtual ~CItem(void);

	// Primary Running Functions
	void Update(float pElapsedTime);
	void Render(void);
	CItem* Create(int pHP,int pMP,int	pDefense,int	pAtkPower,float	pAtkSpeed,int	pAP,float	pCDR,float	pMovement,string	strItemName);


	// Accessors
	int				GetModHPRegen		( void ) const	{	return m_nModHPRegen;	}
	int				GetModMPRegen		( void ) const	{	return m_nModMPRegen;	}
	int				GetModMaxHP			( void ) const	{	return m_nModMaxHP;		}
	int				GetModMaxMP			( void ) const	{	return m_nModMaxMP;		}
	int				GetModDefense		( void ) const	{	return m_nModDefense;		}
	int				GetModAtkPower		( void ) const	{	return m_nModAtkPower;	}
	float			GetModAtkSpeed	( void ) const	{	return m_fModAtkSpeed;	}
	int				GetModAP					( void ) const	{	return m_nModAP;				}
	float			GetModCDR				( void ) const	{	return m_fModCDR;				}
	float			GetModMovement	( void ) const	{	return m_fModMovement;	}

	// Mutator
	void			SetModHPRegen			( int					pHPRegen		)		{	pHPRegen		= m_nModHPRegen;		}
	void			SetModMPRegen			( int					pMpRegen		)		{	pMpRegen		= m_nModMPRegen;	}
	void			SetModMaxHP				( int					pMaxHP			)		{	pMaxHP			= m_nModMaxHP;			}
	void			SetModMaxMP				( int					pMaxMP			)		{	pMaxMP			= m_nModMaxMP;		}
	void			SetModDefense				( int					pDefense			)		{	pDefense			= m_nModDefense;		}
	void			SetModAtkPower			( int					pAtkPower		)		{	pAtkPower		= m_nModAtkPower;	}
	void			SetModAtkSpeed			( float				pAtkSpeed		)		{	pAtkSpeed		= m_fModAtkSpeed;	}
	void			SetModAP						( int					pAP					)		{	pAP					= m_nModAP;					}
	void			SetModCDR					( float				pCDR					)		{	pCDR					= m_fModCDR;				}
	void			SetModMovement		( float				pMovement	)		{	pMovement	= m_fModMovement;	}


	int				GetHP					( void ) const	{	return m_nModHP;					}
	int				GetMP					( void ) const	{	return m_nModMP;				}
	int				GetDefense			( void ) const	{	return m_nModDefense;		}
	int				GetAtkPower		( void ) const	{	return m_nModAtkPower;	}
	float			GetAtkSpeed		( void ) const	{	return m_fModAtkSpeed;	}
	int				GetAP					( void ) const	{	return m_nModAP;					}
	float			GetCDR				( void ) const	{	return m_fModCDR;				}
	float			GetMovement	( void ) const	{	return m_fModMovement;	}
	//
	string			GetItemName(void) const{return m_strItemName;}

	// Mutator
	void			SetHP			( int		pHP			)		{		m_nModHP		= pHP;			}
	void			SetMP			( int		pMP			)		{		m_nModMP		= pMP;			}
	void			SetDefense		( int		pDefense	)		{		m_nModDefense	= pDefense;		}
	void			SetAtkPower		( int		pAtkPower	)		{		m_nModAtkPower	= pAtkPower ;	}
	void			SetAtkSpeed		( float		pAtkSpeed	)		{		m_fModAtkSpeed	= pAtkSpeed ;	}
	void			SetAP			( int		pAP			)		{		m_nModAP		= pAP;			}
	void			SetCDR			( float		pCDR		)		{		m_fModCDR		= pCDR;			}
	void			SetMovement		( float		pMovement	)		{		m_fModMovement	= pMovement;	}
	//
	void			SerItemName		( string	strItemName	)		{		m_strItemName	= strItemName;	}

};

